package co.inventario.modelo.negocio;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;

import co.inventario.datos.sqlserver.PedidoVentaDAOSQLServer;
import co.inventario.datos.sqlserver.EmpleadoDAOSQLServer;
import co.inventario.datos.sqlserver.ClienteDAOSQLServer;
import co.inventario.entidad.PedidoVentaDTO;
import co.inventario.entidad.EmpleadoDTO;
import co.inventario.entidad.ClienteDTO;

public class PedidoVentaNegocio {
	
	public void crear(PedidoVentaDTO pedidoVentaDTO, Connection connection) throws Exception, SQLException {
		PedidoVentaDAOSQLServer pedidoVentaDAOSQLServer = new PedidoVentaDAOSQLServer();
		PedidoVentaDTO pedidoVentaDTOConsultado = pedidoVentaDAOSQLServer.consultarPorConsecutivo(pedidoVentaDTO, connection);
		if (pedidoVentaDTOConsultado == null) {
			pedidoVentaDAOSQLServer.crear(pedidoVentaDTO, connection);
		} else {
			throw new Exception("El pedido de venta que intenta crear, ya existe.");
		}
	}
	
	public void actualizar(PedidoVentaDTO pedidoVentaDTO, Connection connection) throws Exception, SQLException {
		PedidoVentaDAOSQLServer pedidoVentaDAOSQLServer = new PedidoVentaDAOSQLServer();
		PedidoVentaDTO pedidoVentaDTOConsultado = pedidoVentaDAOSQLServer.consultarPorCodigo(pedidoVentaDTO, connection);
		if (pedidoVentaDTOConsultado != null) {
			pedidoVentaDAOSQLServer.actualizar(pedidoVentaDTO, connection);
		} else {
			throw new Exception("El pedido de venta que intenta actualizar, no existe.");
		}
	}

	public PedidoVentaDTO consultarPorCodigo(PedidoVentaDTO pedidoVentaDTO, Connection connection) throws Exception, SQLException {
		PedidoVentaDAOSQLServer pedidoVentaDAOSQLServer = new PedidoVentaDAOSQLServer();
		PedidoVentaDTO pedidoVentaDTOConsultado = pedidoVentaDAOSQLServer.consultarPorCodigo(pedidoVentaDTO, connection);
		return pedidoVentaDTOConsultado;
	}
	
	public ArrayList<PedidoVentaDTO> consultarTodo(Connection connection) throws Exception, SQLException {
		PedidoVentaDAOSQLServer pedidoVentaDAOSQLServer = new PedidoVentaDAOSQLServer();
		ArrayList<PedidoVentaDTO> pedidoVentaDTOLista = pedidoVentaDAOSQLServer.consultarTodo(connection);
		ClienteDAOSQLServer clienteDAOSQLServer = new ClienteDAOSQLServer();
		ClienteDTO clienteDTO = null;
		EmpleadoDAOSQLServer empleadoDAOSQLServer = new EmpleadoDAOSQLServer();
		EmpleadoDTO empleadoDTO = null;
		for (PedidoVentaDTO pedidoVentaDTO : pedidoVentaDTOLista) {
			empleadoDTO = empleadoDAOSQLServer.consultarPorCodigo(pedidoVentaDTO.getEmpleadoDTO(), connection);
			pedidoVentaDTO.setEmpleadoDTO(empleadoDTO);
			clienteDTO = clienteDAOSQLServer.consultarPorCodigo(pedidoVentaDTO.getClienteDTO(), connection);
			pedidoVentaDTO.setClienteDTO(clienteDTO);
		}
		return pedidoVentaDTOLista;
	}
	
	
}
